package mx.itesm.escenas;

import mx.itesm.constants.ConstantesEscenas;
import mx.itesm.manejadores.ManejadorEscenas;

import org.andengine.engine.handler.timer.ITimerCallback;
import org.andengine.engine.handler.timer.TimerHandler;
import org.andengine.entity.sprite.ButtonSprite;
import org.andengine.input.touch.TouchEvent;


/*=================================================
 * NOTAAA!!!
 * La escena no es funcional todavia.
 =================================================*/


public class EscenaElegirPersonaje extends EscenaBase {
	
	/*
	 * **************************************************************
	 *                                         Variables
	 * **************************************************************
	 */
	
	private static int personajeElegido;

	private static final int ORIGEN = ConstantesEscenas.ORIGEN;	
	private static final int AKANE_X = ConstantesEscenas.AKANE_X;
	private static final int AKANE_Y = ConstantesEscenas.AKANE_Y;
	private static final int KAZUKI_X = ConstantesEscenas.KAZUKI_X;
	private static final int KAZUKI_Y = ConstantesEscenas.KAZUKI_Y;

	/*
	 * **************************************************************
	 *                                         Metodos
	 * **************************************************************
	 */
	
	@Override
	public void crearEscena() {
		
		attachChild(createSprite(ORIGEN, ORIGEN, manejadorRecursos.elegirPersonajeRegion,
				mVerticesObjetos));
		this.setTouchAreaBindingOnActionDownEnabled(true);
					
		// Crea el boton de Akake y lo agrega a la escena
		ButtonSprite botonAkane = new ButtonSprite(AKANE_X, AKANE_Y, 
				manejadorRecursos.botonAkaneRegion, mVerticesObjetos) {

			// Se ejecuta cada vez que el usuario hace tap sobre el boton
			@Override
			public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
					float pTouchAreaLocalX, float pTouchAreaLocalY) {

				if (pSceneTouchEvent.isActionDown()) { // actionUp, actionDown, actionMove
					personajeElegido = 1;
					ManejadorEscenas.getInstance().cargarEscenaElegirNivel();
					ManejadorEscenas.getInstance().setEscena(TipoEscena.ESCENA_ELEGIR_NIVEL);
					ManejadorEscenas.getInstance().descargarEscenaElegirPersonaje();
				}
				return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX,
						pTouchAreaLocalY);
			}
		};
		
		// Crea el boton de Kazuki y lo agrega a la escena
		ButtonSprite botonKazuki = new ButtonSprite(KAZUKI_X, KAZUKI_Y,
				manejadorRecursos.botonKazukiRegion, mVerticesObjetos)  {

			// Se ejecuta cada vez que el usuario hace tap sobre el boton
			@Override
			public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
					float pTouchAreaLocalX, float pTouchAreaLocalY) {

				if (pSceneTouchEvent.isActionDown()) { // actionUp, actionDown, actionMove
					personajeElegido = 2;
					ManejadorEscenas.getInstance().cargarEscenaElegirNivel();
					ManejadorEscenas.getInstance().setEscena(TipoEscena.ESCENA_ELEGIR_NIVEL);
					ManejadorEscenas.getInstance().descargarEscenaElegirPersonaje();
				}
				return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX,
						pTouchAreaLocalY);
			}
		};
		
		this.registerTouchArea(botonAkane);
		this.attachChild(botonAkane);
		
		this.registerTouchArea(botonKazuki);
		this.attachChild(botonKazuki);
	}
	
	public static int getPersonajeElegido() {
		return personajeElegido;
	}

	@Override
	public TipoEscena getTipoEscena() {
		return TipoEscena.ESCENA_ELEGIR_PERSONAJE;
	}

	@Override
	public void removerEscena() {
		this.detachSelf();
		this.dispose();
	}

	@Override
	public void onBackKeyPressed() {
		
		ManejadorEscenas.getInstance().cargarEscenaLoading();
		ManejadorEscenas.getInstance().setEscena(TipoEscena.ESCENA_CARGAR);
		ManejadorEscenas.getInstance().descargarEscenaElegirPersonaje();

		engine.registerUpdateHandler(new TimerHandler(0.2f, new ITimerCallback() {

			@Override
			public void onTimePassed(final TimerHandler pTimerHandler) {

				engine.unregisterUpdateHandler(pTimerHandler);
				ManejadorEscenas.getInstance().cargarEscenaMenu();
				ManejadorEscenas.getInstance().setEscena(TipoEscena.ESCENA_MENU);
			}
		}));
	}
}